package com.translate.web.dao;
import java.util.List;

import com.dao.base.IBaseMapper;
import com.translate.entity.Order;

public interface OrderMapper extends IBaseMapper<Order> { 

	/**
	 * 根据订单id 及 服务类型 获取数据
	 * @param ids
	 * @param serviceType
	 * @return
	 */
	List<Order> getOrdersByIds(long[] ids, int serviceType);
	
	/**
	 * 获取已支付的订单
	 * @param managerId
	 * @param userId
	 * @return
	 */
	List<Order> getAlreadyPaymentByBalance(int managerId, int userId);
	
	
	List<Order> getOrdersByPayManagerIdAndUserId(int payManagerId, int userId);

	List<Order> getOrdersByPayManagerIdAndPayType(int payManagerId, int userId);
	
	List<Order> getOrdersByPayManagerIdAndTeamId(int payManagerId, int teamId);
	
	/**
	 * 取消订单
	 * @param managerId
	 * @param userId
	 * @return
	 */
	int cancelOrder(int managerId, int userId);
	
	/**
	 * 团长取消订单
	 * @param managerId
	 * @param userId
	 * @return
	 */
	int cancelOrderByTeam(Integer id, int teamId);
	
	/**
	 * 统计团队订单
	 * @param <P>
	 * @param param
	 * @return
	 */
	<P> int countByTeam(P param);
	
	/**
	 * 团队订单
	 * @param <P>
	 * @param param
	 * @return
	 */
	<P> List<Order> getDataListByTeam(P param);
	
	/**
     * 取消单个订单
     * @param <S>
     * @param param
     * @return
     */ 
	<S> int cancelOrderSingle(S param);
	
	
	
	/**
	 * 支付成功
	 * @param <P>
	 * @param param
	 * @return
	 */
	<P> int  paySuccess(P param);
	
	/**
	 * 团长支付成功
	 * @param <P>
	 * @param behaviorRequestParam
	 * @return
	 */
	<P> int paySuccessByTeam(P behaviorRequestParam);
	
	
	/**
	 * 根据用户id及管理id 获取数据
	 * @param <P>
	 * @param behaviorRequestParam
	 * @return
	 */
	<P> List<Order> getOrdersByUserIdAndManagerId(P behaviorRequestParam);
	
	/**
	 * 待确认
	 * @param behaviorRequestParam
	 * @return
	 */
	<P> int toBeConfirmed(P behaviorRequestParam);

	
	/**
	 * 待确认
	 * @param behaviorRequestParam
	 * @return
	 */
	<P> int toBeConfirmedByTeam(P behaviorRequestParam);
	
	
	/**
	 * 查询余额使用记录
	 * @param <P>
	 * @param parameter
	 * @return
	 */
	int getCountByRechargeSearch(String column, long value, Long startTime, Long endTime);
	
	/**
	 * 获取余额记录
	 * @param <P>
	 * @param param
	 * @return
	 */
	List<Order> getDataByListByRechargeSearch
	(String column, long value, Long startTime, Long endTime, long lastId, int selectCount);
	
	/**
	 * 评论订单
	 * @return
	 */
	<S> int commentOrder(S param);
	
	/**
	 * 更新二次服务状态
	 * @param <P>
	 * @param parameter
	 * @return
	 */
	<P> int updateService(P parameter);
	
	/**
	 * 取消二次服务
	 * @param <P>
	 * @param parameter
	 * @return
	 */
	 int cancelSecondaryService(int userId, int id, int userStatus, int orderStatus);
	
	/**
	 * 拟帐合同
	 * @param order
	 * @return
	 */
	int applicationForReimbursementContract(Order order);
	
	
	/**
	 * 翻译证明
	 * @param order
	 * @return
	 */
	int needTranslationProof(Order order);
	
	/**
	 * 通过id和用户id删除订单
	 * @param id
	 * @param userId
	 * @return
	 */
	int deleteByIdAndUserId(int id, int userId) ;

	/**
	 * 支付管理
	 * @param id
	 * @param userId
	 * @param payManagerId
	 * @return
	 */
	int setPayManagerByOrderData(int id, int userId, int payManagerId);

	
}
